package listener;

import javax.servlet.*;
import beans.*;
import pool.*;

/**
 * @author Antonin Mozzati
 * @author Yannick Schürter
 */
public final class ContextListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        ServletContext servletContext = servletContextEvent.getServletContext();
        try {
            // on établit la connexion à la base, ici Derby
            JDCConnectionDriver driver = new pool.JDCConnectionDriver(
                    "org.apache.derby.jdbc.ClientDriver",
                    "jdbc:derby://localhost:1527/Tweet",
                    "app", "app");
            ListeUtilisateur listeUtilisateur = new ListeUtilisateur(driver);
            ListeFlux listeFlux = new ListeFlux(driver);
            ListeNouvelles listeNouvelles = new ListeNouvelles(driver);
            ListeTagFlux listeTagFlux = new ListeTagFlux(driver);
            ListeTagNouvelle listeTagNouvelle = new ListeTagNouvelle(driver);
            ListeSuivis listeSuivis = new ListeSuivis(driver);
            ListeInvitations listeInvitations = new ListeInvitations(driver);
            servletContext.setAttribute("listeUtilisateur", listeUtilisateur);
            servletContext.setAttribute("listeFlux", listeFlux);
            servletContext.setAttribute("listeNouvelles", listeNouvelles);
            servletContext.setAttribute("listeTagFlux", listeTagFlux);
            servletContext.setAttribute("listeTagNouvelle", listeTagNouvelle);
            servletContext.setAttribute("listeSuivis", listeSuivis);
            servletContext.setAttribute("listeInvitations", listeInvitations);
        } catch (Exception e) {
            servletContext.log("Pb attribut liste: " + e.getMessage());
        }
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        ServletContext servletContext = servletContextEvent.getServletContext();
        ListeUtilisateur listeUtilisateur = (ListeUtilisateur) servletContext.getAttribute("listeUtilisateur");
        ListeFlux listeFlux = (ListeFlux) servletContext.getAttribute("listeFlux");
        ListeNouvelles listeNouvelles = (ListeNouvelles) servletContext.getAttribute("listeNouvelles");
        ListeTagFlux listeTagFlux = (ListeTagFlux) servletContext.getAttribute("listeTagFlux");
        ListeTagNouvelle listeTagNouvelle = (ListeTagNouvelle) servletContext.getAttribute("listeTagNouvelle");
        ListeSuivis listeSuivis = (ListeSuivis) servletContext.getAttribute("listeSuivis");
        ListeInvitations listeInvitations = (ListeInvitations) servletContext.getAttribute("listeInvitations");
        servletContext.removeAttribute("listeUtilisateur");
        servletContext.removeAttribute("listeFlux");
        servletContext.removeAttribute("listeNouvelles");
        servletContext.removeAttribute("listeTagFlux");
        servletContext.removeAttribute("listeTagNouvelle");
        servletContext.removeAttribute("listeSuivis");
        servletContext.removeAttribute("listeInvitations");
    }
}
